﻿#ifndef UIDEMO3_H
#define UIDEMO3_H

#include <QDialog>
#include<iostream>
#include<memory>
#include<QTreeWidgetItem>
#include<QTreeWidget>
#include<QNetworkAccessManager>
#include<QVBoxLayout>
#include<QGraphicsScene>
#include<QGraphicsView>
#include"linerelation.h"
#include<math.h>

namespace Ui {
class UIDemo3;
}

class UIDemo3 : public QDialog
{
    Q_OBJECT

public:
    explicit UIDemo3(QWidget *parent = nullptr);
    ~UIDemo3();

private:
    Ui::UIDemo3 *ui;
    bool max;
    QRect location;
    QList<QWidget *> frms;
    QNetworkAccessManager *manager;
    QJsonDocument parseReply(QNetworkReply *reply);
    QMap<QString,QMap<QString,QMap<QString,QVariant>>> fieldRecord;//zz:存储返回的表信息< 表名称, < 表字段名称,<属性,类型> > >
    QMap<QString,QMap<QString,QPair<QString,QString>>> relationRecord;//zz:存储所有的表关系，用以绘制连接线< 表名称 ,< 其他表名称 , 关系类型#关系名称 > >
    QMap<QString,QGraphicsProxyWidget*> table2proxy;//zz:表名到widget的映射
    QVector<lineRelation*> linerelation;//zz:存放所有的line，用于计时器更新
    QVBoxLayout *tablelayout;//zz：辅助layout
    QGraphicsScene *tablescene;//zz:表显示场景
    QGraphicsView *tableview;//zz:表显示视图
    QWidget *tablewidget0;//zz:辅助控件
    QTimer *timerLineRefresh;//zz:line刷新定时器


private slots:
    void inittableview();//zz:初始化视图
    void initForm();
    void initTreeWidget();
    void initPanelWidget();
    void initTableWidget();
    void initMenu();
    void doMenu();
    void setPrimaryKeyUniqueInTable(int row);//zz:实现主键唯一效果
    void errorMessageBox(QString moduleName,QString errorType);//zz:生成错误提示框(模块名称，错误类型)
    void tableshow();//zz:绘制table
    void updateLine();//zz:更新line

private slots:
    // 模块页面选择
    void on_btnDefine_clicked();
    void on_btnCollect_clicked();
    void on_btnAnalyse_clicked();
    void on_btnMenu_Min_clicked();
    void on_btnMenu_Max_clicked();
    void on_btnMenu_Close_clicked();
    // 模式定义模块 zz
    void on_addFieldButton_clicked();//zz
    void on_delFieldButton_clicked();//zz
    void on_savePatternButton_clicked();//zz
    void on_comboBox_tables_currentIndexChanged(int);//zz
    void on_delPatternButton_clicked();//zz
    void on_saveRelationButton_clicked();//zz
    void on_refreshTableViewButton_clicked();//zz
    void on_comboBox_otherTable_currentIndexChanged(int);//zz
    void on_delRelationButton_clicked();//zz
    void on_refreshTableButton_clicked();//zz
    void on_amplifyButton_clicked();//zz
    void on_reduceButton_clicked();//zz
    // 数据分析模块 lkl
    void on_addrecord_clicked();
    void on_delrecord_clicked();
    void on_filtratedata_clicked();
    void on_back_clicked();
    void on_addconfirm_clicked();
    void on_comboBox_gettables_currentIndexChanged(int);
    void on_ascsort_clicked();
    void on_descsort_clicked();
    void on_addcondition_clicked();
    void on_filtrateconfirm_clicked();
    void on_comboBox_connect_currentIndexChanged(int);
    void on_lineEdit_addition_textChanged();
    // 数据收集模块 lkl
    void on_treeWidget_3_itemClicked(QTreeWidgetItem *item, int column);
    void on_todesignlinkButton_clicked();
    void on_deleteForm_clicked();
    void on_comboBox_getforms_currentIndexChanged(int index);
};

#endif // UIDEMO3_H
